fix: Fix the calculation of the basis parameter for FDv2 streaming. (Does not affect FDv1).#1165
Conversation
|
I think we will want further work to change the data source platform API to allow re-calculating this value on reconnect. |
|
@launchdarkly/js-sdk-common size report |
|
@launchdarkly/browser size report |
|
@launchdarkly/js-client-sdk size report |
|
@launchdarkly/js-client-sdk-common size report |
joker23
left a comment
There was a problem hiding this comment.
Looks good - question for my benefit: we are intending for different datasources to define their own selectorGetter right?
The synchronizers/initializers will have a selector passed to them by an external entity. The selectorGetter is just a facade for wherever we decide to store it. In server-side SDKs we store it with the data store, which is basically the flag manager. https://github.com/launchdarkly/java-core/blob/f1f42f82227f4900fb691cb2b7e6f56e4931789d/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/datasources/SelectorSource.java#L10 For client-side it likely will actually end up in the data manager. The selector is specific to a context, but shared by all the data sources. Propagating it from the initializer to a synchronizer is how we do two-phase init. |
🤖 I have created a release *beep* *boop* --- <details><summary>browser: 0.1.12</summary> ## [0.1.12](browser-v0.1.11...browser-v0.1.12) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk bumped from 4.3.1 to 4.4.0 </details> <details><summary>browser-telemetry: 1.0.28</summary> ## [1.0.28](browser-telemetry-v1.0.27...browser-telemetry-v1.0.28) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/js-client-sdk bumped from 4.3.1 to 4.4.0 </details> <details><summary>jest: 1.0.7</summary> ## [1.0.7](jest-v1.0.6...jest-v1.0.7) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/react-native-client-sdk bumped from ~10.14.1 to ~10.15.0 </details> <details><summary>js-client-sdk: 4.4.0</summary> ## [4.4.0](js-client-sdk-v4.3.1...js-client-sdk-v4.4.0) (2026-03-16) ### Features * Add experimental FDv2 configuration (unused) ([#1169](#1169)) ([c7130cc](c7130cc)) * create @launchdarkly/js-contract-test-utils package ([#1163](#1163)) ([2de5c27](2de5c27)) ### Bug Fixes * Allow 0 status code to be handled by the streaming error filter. ([d96b46b](d96b46b)) * Improve error handling for FDv2 streaming ([d96b46b](d96b46b)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.21.0 to 1.22.0 </details> <details><summary>js-client-sdk-common: 1.22.0</summary> ## [1.22.0](js-client-sdk-common-v1.21.0...js-client-sdk-common-v1.22.0) (2026-03-16) ### Features * Add experimental FDv2 configuration (unused) ([#1169](#1169)) ([c7130cc](c7130cc)) * Add explicit disableCache setting. ([6be89dd](6be89dd)) * Add FDv1 polling synchronizer for FDv2 fallback (SDK-1923) ([#1159](#1159)) ([498216a](498216a)) * Add mode resolution table for FDv2. ([#1146](#1146)) ([ab2436d](ab2436d)) * FDv2 Cache Initializer ([#1147](#1147)) ([7d6299f](7d6299f)) ### Bug Fixes * Allow 0 status code to be handled by the streaming error filter. ([d96b46b](d96b46b)) * Fix the calculation of the basis parameter for FDv2 streaming. (Does not affect FDv1). ([#1165](#1165)) ([bbdd6c6](bbdd6c6)) * Improve error handling for FDv2 streaming ([d96b46b](d96b46b)) * Max cached context enforcement wasn't working for 0. ([6be89dd](6be89dd)) * rename FDv2 object kind from `flagEval` to `flag-eval` ([#1185](#1185)) ([cd4b119](cd4b119)) </details> <details><summary>react-native-client-sdk: 10.15.0</summary> ## [10.15.0](react-native-client-sdk-v10.14.1...react-native-client-sdk-v10.15.0) (2026-03-16) ### Features * Add experimental FDv2 configuration (unused) ([#1169](#1169)) ([c7130cc](c7130cc)) * create @launchdarkly/js-contract-test-utils package ([#1163](#1163)) ([2de5c27](2de5c27)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.21.0 to 1.22.0 </details> <details><summary>server-sdk-ai: 0.16.6</summary> ## [0.16.6](server-sdk-ai-v0.16.5...server-sdk-ai-v0.16.6) (2026-03-16) ### Bug Fixes * Make defaultValue optional with a disabled default ([#1144](#1144)) ([e46769b](e46769b)) </details> <details><summary>server-sdk-ai-langchain: 0.5.2</summary> ## [0.5.2](server-sdk-ai-langchain-v0.5.1...server-sdk-ai-langchain-v0.5.2) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/server-sdk-ai bumped from ^0.16.5 to ^0.16.6 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.6 </details> <details><summary>server-sdk-ai-openai: 0.5.2</summary> ## [0.5.2](server-sdk-ai-openai-v0.5.1...server-sdk-ai-openai-v0.5.2) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/server-sdk-ai bumped from ^0.16.5 to ^0.16.6 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.6 </details> <details><summary>server-sdk-ai-vercel: 0.5.2</summary> ## [0.5.2](server-sdk-ai-vercel-v0.5.1...server-sdk-ai-vercel-v0.5.2) (2026-03-16) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/server-sdk-ai bumped from ^0.16.5 to ^0.16.6 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.6 </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Primarily automated release/version bumps and changelog updates across multiple packages; no functional code changes beyond embedded SDK version constants and dependency bumps. > > **Overview** > Publishes a new release across the monorepo by bumping versions in `.release-please-manifest.json`, updating package `CHANGELOG.md`s, and syncing `package.json` dependency ranges. > > Notable bumps include `@launchdarkly/js-client-sdk` to `4.4.0` (and `@launchdarkly/js-client-sdk-common` to `1.22.0`), `@launchdarkly/react-native-client-sdk` to `10.15.0`, `@launchdarkly/server-sdk-ai` to `0.16.6`, and corresponding provider/aggregator packages (`server-sdk-ai-*`, `@launchdarkly/browser`, `browser-telemetry`, `@launchdarkly/jest`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a6d9634. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
The streaming synchronizer was pre-calculating the URL so it didn't include the selector from the initial poll.
Note
Medium Risk
Touches FDv2 streaming connection setup by changing how the EventSource URL is built and encoded; a mistake here could break streaming connections or produce an incorrectly encoded
basisparameter.Overview
Fixes FDv2 streaming URL construction so the
basisquery parameter is computed atstart()time via an optionalselectorGetter, ensuring the stream request can include the selector derived from the initial poll.Adds test coverage for including/excluding
basisbased onselectorGetterpresence/return value, and updates streaming test helpers to pass the new option through tocreateStreamingBase.Written by Cursor Bugbot for commit 063d6bc. This will update automatically on new commits. Configure here.